使用的哪个命令,x还是dt?对于类的成员,应该用后者,dt mymodule!myclass
类型信息总是有的,用dt查看就可以了,比如:
0:000>dt BadBoy!CBadBoyDlg +0x000 __VFN_table : Ptr32 =003b0000 classCObject : CRuntimeClass =003b0000 classCCmdTarget : CRuntimeClass =003b0000 _commandEntries : [0] AFX_OLECMDMAP_ENTRY =003b0000 commandMap : AFX_OLECMDMAP =003b0000 _dispatchEntries : [0] AFX_DISPMAP_ENTRY =003b0000 _dispatchEntryCount : Uint4B =003b0000 _dwStockPropMask : Uint4B =003b0000 dispatchMap : AFX_DISPMAP =003b0000 _connectionEntries : [0] AFX_CONNECTIONMAP_ENTRY =003b0000 connectionMap : AFX_CONNECTIONMAP =003b0000 _interfaceEntries : [0] AFX_INTERFACEMAP_ENTRY =003b0000 interfaceMap : AFX_INTERFACEMAP =003b0000 _eventsinkEntries : [0] AFX_EVENTSINKMAP_ENTRY =003b0000 _eventsinkEntryCount : Uint4B =003b0000 eventsinkMap : AFX_EVENTSINKMAP +0x004 m_dwRef : Int4B +0x008 m_pOuterUnknown : Ptr32 IUnknown +0x00c m_xInnerUnknown : Uint4B +0x010 m_xDispatch : CCmdTarget::XDispatch +0x014 m_bResultExpected : Int4B +0x018 m_xConnPtContainer : CCmdTarget::XConnPtContainer +0x01c m_pModuleState : Ptr32 AFX_MODULE_STATE =003b0000 classCWnd : CRuntimeClass +0x020 m_hWnd : Ptr32 HWND__ =003b0000 wndTop : CWnd =003b0000 wndBottom : CWnd =003b0000 wndTopMost : CWnd =003b0000 wndNoTopMost : CWnd +0x024 m_bEnableActiveAccessibility : Bool +0x028 m_pStdObject : Ptr32 IAccessible +0x02c m_pProxy : Ptr32 IAccessibleProxy =003b0000 _interfaceEntries : [0] AFX_INTERFACEMAP_ENTRY =003b0000 interfaceMap : AFX_INTERFACEMAP +0x030 m_xAccessible : CWnd::XAccessible +0x034 m_xAccessibleServer : CWnd::XAccessibleServer +0x038 m_bIsTouchWindowRegistered : Int4B +0x03c m_ptGestureFrom : CPoint +0x044 m_ulGestureArg : Uint8B +0x04c m_bGestureInited : Int4B +0x050 m_pCurrentGestureInfo : Ptr32 tagGESTUREINFO +0x054 m_hWndOwner : Ptr32 HWND__ +0x058 m_nFlags : Uint4B +0x05c m_pfnSuper : Ptr32 long =003b0000 m_nMsgDragList : Uint4B +0x060 m_nModalResult : Int4B +0x064 m_pDropTarget : Ptr32 COleDropTarget +0x068 m_pCtrlCont : Ptr32 COleControlContainer +0x06c m_pCtrlSite : Ptr32 COleControlSite +0x070 m_pMFCCtrlContainer : Ptr32 CMFCControlContainer =003b0000 classCDialog : CRuntimeClass +0x074 m_nIDHelp : Uint4B +0x078 m_lpszTemplateName : Ptr32 Char +0x07c m_hDialogTemplate : Ptr32 Void +0x080 m_lpDialogTemplate : Ptr32 DLGTEMPLATE +0x084 m_lpDialogInit : Ptr32 Void +0x088 m_pParentWnd : Ptr32 CWnd +0x08c m_hWndTop : Ptr32 HWND__ +0x090 m_pOccDialogInfo : Ptr32 _AFX_OCC_DIALOG_INFO +0x094 m_InfoList : CListBox +0x108 m_dwMemBytes : Uint4B +0x10c m_hIcon : Ptr32 HICON__ +0x110 m_ulCount : Uint4B
如果知道对象地址,那么可以这样观察到每个成员的取值:
0:000>dt BadBoy!CBadBoyDlg 0x77c50da8 +0x000 __VFN_table : 0x00087d83 =003b0000 classCObject : CRuntimeClass =003b0000 classCCmdTarget : CRuntimeClass =003b0000 _commandEntries : [0] AFX_OLECMDMAP_ENTRY =003b0000 commandMap : AFX_OLECMDMAP =003b0000 _dispatchEntries : [0] AFX_DISPMAP_ENTRY =003b0000 _dispatchEntryCount : 0x905a4d =003b0000 _dwStockPropMask : 0x905a4d =003b0000 dispatchMap : AFX_DISPMAP =003b0000 _connectionEntries : [0] AFX_CONNECTIONMAP_ENTRY =003b0000 connectionMap : AFX_CONNECTIONMAP =003b0000 _interfaceEntries : [0] AFX_INTERFACEMAP_ENTRY =003b0000 interfaceMap : AFX_INTERFACEMAP =003b0000 _eventsinkEntries : [0] AFX_EVENTSINKMAP_ENTRY =003b0000 _eventsinkEntryCount : 0x905a4d =003b0000 eventsinkMap : AFX_EVENTSINKMAP +0x004 m_dwRef : -35125899 +0x008 m_pOuterUnknown : 0x33000899 IUnknown +0x00c m_xInnerUnknown : 0x8be175c9 +0x010 m_xDispatch : CCmdTarget::XDispatch +0x014 m_bResultExpected : -62535688 +0x018 m_xConnPtContainer : CCmdTarget::XConnPtContainer +0x01c m_pModuleState : 0x00207d83 AFX_MODULE_STATE =003b0000 classCWnd : CRuntimeClass +0x020 m_hWnd : 0x458b1b74 HWND__ =003b0000 wndTop : CWnd =003b0000 wndBottom : CWnd =003b0000 wndTopMost : CWnd =003b0000 wndNoTopMost : CWnd +0x024 m_bEnableActiveAccessibility : 20 +0x028 m_pStdObject : 0x558b0889 IAccessible +0x02c m_pProxy : 0xf8458b20 IAccessibleProxy =003b0000 _interfaceEntries : [0] AFX_INTERFACEMAP_ENTRY =003b0000 interfaceMap : AFX_INTERFACEMAP +0x030 m_xAccessible : CWnd::XAccessible +0x034 m_xAccessibleServer : CWnd::XAccessibleServer +0x038 m_bIsTouchWindowRegistered : 293097 +0x03c m_ptGestureFrom : CPoint +0x044 m_ulGestureArg : 0xc4558939`ea83c455 +0x04c m_bGestureInited : 197426563 +0x050 m_pCurrentGestureInfo : 0x458b0a77 tagGESTUREINFO +0x054 m_hWndOwner : 0x8524ffc4 HWND__ +0x058 m_nFlags : 0x77c51264 +0x05c m_pfnSuper : 0x1175c933 long +1175c933 =003b0000 m_nMsgDragList : 0x905a4d +0x060 m_nModalResult : 812140906 +0x064 m_pDropTarget : 0xe877984b COleDropTarget +0x068 m_pCtrlCont : 0xffd6fb3c COleControlContainer +0x06c m_pCtrlSite : 0x0174c085 COleControlSite +0x070 m_pMFCCtrlContainer : 0xe9c033cc CMFCControlContainer =003b0000 classCDialog : CRuntimeClass +0x074 m_nIDHelp : 0x43d +0x078 m_lpszTemplateName : 0x000435e9 "--- memory read error at address 0x000435e9 ---" +0x07c m_hDialogTemplate : 0x187d8300 +0x080 m_lpDialogTemplate : 0x6a117400 DLGTEMPLATE +0x084 m_lpDialogInit : 0x4b306850 +0x088 m_pParentWnd : 0x19e87798 CWnd +0x08c m_hWndTop : 0x85ffd6fb HWND__ +0x090 m_pOccDialogInfo : 0xcc0174c0 _AFX_OCC_DIALOG_INFO +0x094 m_InfoList : CListBox +0x108 m_dwMemBytes : 0x89f855ff +0x10c m_hIcon : 0x9fe9fc45 HICON__ +0x110 m_ulCount : 0x8b000003